#ifndef _PRODUCT_H_
#define _PRODUCT_H_

#include <iostream>

using namespace std;

class AbstractApple
{
public:
    virtual void showName() = 0;
};

class ChinaApple : public AbstractApple
{
public:
    virtual void showName()
    {
        cout << "China Apple" << endl;
    }
};

class AmericaApple : public AbstractApple
{
public:
    virtual void showName()
    {
        cout << "America Apple" << endl;
    }
};

class JapanApple : public AbstractApple
{
public:
    virtual void showName()
    {
        cout << "Japan Apple" << endl;
    }
};

class AbstractBanana
{
public:
    virtual void showName() = 0;
};

class ChinaBanana : public AbstractBanana
{
public:
    virtual void showName()
    {
        cout << "China Banana" << endl;
    }
};

class AmericaBanana : public AbstractBanana
{
public:
    virtual void showName()
    {
        cout << "America Banana" << endl;
    }
};

class JapanBanana : public AbstractBanana
{
public:
    virtual void showName()
    {
        cout << "Japan Banana" << endl;
    }
};

class AbstractPear
{
public:
    virtual void showName() = 0;
};

class ChinaPear : public AbstractPear
{
public:
    virtual void showName()
    {
        cout << "China Pear" << endl;
    }
};

class AmericaPear : public AbstractPear
{
public:
    virtual void showName()
    {
        cout << "America Pear" << endl;
    }
};

class JapanPear : public AbstractPear
{
public:
    virtual void showName()
    {
        cout << "Japan Pear" << endl;
    }
};


#endif // _PRODUCT_H_